﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//struct S
//{
//	char d;
//    long long g;
//    int j;
//};

//struct S
//{
//	char c1;
//	char c2;
//	int i;
//};
//
//int main()
//{
//	struct S v = { 0 };
//	printf("%zd\n", sizeof(v));
//	return 0;
//}

//union AA
//{
//	int c;
//	char y;
//};
//
//int main()
//{
//	/*union AA t = { 0 };*/
//	/*printf("%zd\n", sizeof(t));
//	printf("%p\n", &t);
//	printf("%p\n", &t.c);
//	printf("%p\n", &t.y);*/
//	union AA t = { 0 };
//	t.c = 0x11223344;
//	t.y = 0x55;
//	return 0;
//}
//union AA
//{
//	int c;//4  4  8
//	short y[7];//14  2  8
//};//AA 对齐数是 4
//
//int main()
//{
//	union AA t = { 0 };
//	printf("%zd\n", sizeof(t));
//	return 0;
//}

//int check_sys()
//{
//	union
//	{
//		int i;
//		char c;
//	}un;
//	un.i = 1;
//	return un.c;//返回1是⼩端，返回0是⼤端
//}
//
//int main()
//{
//	int i = check_sys();
//	printf("%d\n", i);
//	return 0;
//}

//struct stu
//{
//	int num;
//	char name[10];
//	int age;
//};
//
//void fun(struct stu* p)
//{
//	printf("%s\n", (*p).name);
//	return;
//}
//
//int main()
//{
//	struct stu students[3] = { {9801,"zhang",20},
//							 {9802,"wang",19},
//					{9803,"zhao",18} };
//	fun(students + 1);//{9802,"wang",19},
//	return 0;
//}

//struct S
//{
//	int a;
//	int b;
//};
//int main()
//{
//	struct S a, * p = &a;
//	a.a = 99;
//	printf("%d\n", __________);
//	return 0;
//}

//typedef struct 
//{
//	int a;//4 8 4    
//	char b;// 1 8 2
//	short c;//2 8 2 
//	short d;//2 8 2
//}AA_t;// 4 4 4 4   16

//#pragma pack(4)
//struct A
//{
//	int a;// 4 4 4 
//	short b;// 2 4 2
//	int c;// 4 4 4
//	char d;// 1 4 1
//};
//
//struct B
//{
//	int a;// 4 4 4
//	short b;// 2 4 2
//	char c;// 1 4 1
//	int d;// 4 4 4
//};

//#pragma pack(4)/*编译选项，表示4字节对齐 平台：VS2013。语言：C语言*/
////假设long 是4个字节
//int main(int argc, char* argv[])
//{
//    struct tagTest1
//    {
//        short a;// 2 4 2
//        char d;// 1 4 1
//        long b;// 4 4 4
//        long c;// 4 4 4 
//    };//12
//    struct tagTest2
//    {
//        long b;// 4 4 4
//        short c;// 2 4 2
//        char d;// 1 4 1
//        long a;// 4 4 4
//    };//16
//    struct tagTest3
//    {
//        short c;// 2 4 2
//        long b;// 4 4 4
//        char d;// 1 4 1
//        long a;// 4 4 4
//    };//14
//    struct tagTest1 stT1;
//    struct tagTest2 stT2;
//    struct tagTest3 stT3;
//
//    printf("%d %d %d", sizeof(stT1), sizeof(stT2), sizeof(stT3));
//    return 0;
//}
//#pragma pack()

/*#define MAX_SIZE 5
struct _Record_Struct
{
	unsigned char Env_Alarm_ID : 4;
	unsigned char Para1 : 2;
	unsigned char state;
	unsigned char avail : 1;
}*Env_Alarm_Record;
struct _Record_Struct* pointer = (struct _Record_Struct*)
	malloc(sizeof(struct*//* _Record_Struct) * 5);*/

//int main()
//{
//	unsigned char puc[4];
//	struct tagPIM
//	{
//		unsigned char ucPim1;
//		unsigned char ucData0 : 1;
//		unsigned char ucData1 : 2;
//		unsigned char ucData2 : 3;
//	}*pstPimData;
//	pstPimData = (struct tagPIM*)puc;
//	memset(puc, 0, 4);
//	pstPimData->ucPim1 = 2;
//	pstPimData->ucData0 = 3;
//	pstPimData->ucData1 = 4;
//	pstPimData->ucData2 = 5;
//	printf("%02x %02x %02x %02x\n", puc[0], puc[1], puc[2], puc[3]);
//	return 0;
//}

//union Un
//{
//	short s[7];
//	int n;
//};
//int main()
//{
//	printf("%d\n", sizeof(union Un));
//	return 0;
//}

int main()
{
	union
	{
		short k;
		char i[2];
	}*s, a;
	s = &a;
	s->i[0] = 0x39;
	s->i[1] = 0x38;
	printf("%x\n", a.k);
	return 0;
}